package com.gk.feignclient;

import com.gk.entity.Product;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * @author gk
 * @function 调用商品服务接口
 */
@FeignClient(value = "PRODUCT") //指明该接口为Feign客户端接口,value: 用来书写调用服务id
public interface ProductClient {

    //声明调用商品服务根据类别id查询分页查询商品信息 以及总条数
    @GetMapping("/productList")
    String findByCategoryIdAndPage(@RequestParam("page") Integer page, @RequestParam("rows") Integer rows, @RequestParam("categoryId") Integer categoryId);

    //声明调用商品服务 根据类别id查询一组商品信息
    @GetMapping("/products")
    List<Product> findByCategoryId(@RequestParam("categoryId") Integer categoryId);

    //声明调用根据id查询商品信息接口
    @GetMapping("/product/{id}")
    Product product(@PathVariable("id") Integer id);

    //声明调用商品服务中test4接口 传递一个List集合类型参数
    @GetMapping("/test4")
    String test4(@RequestParam("ids") String[] ids);

    //声明调用商品服务中test3接口 传递一个数组类型 queryString /test3?ids=21&ids=22
    @GetMapping("/test3")
    String test3(@RequestParam("ids") String[] ids);

    //声明调用商品服务中test2接口，传递一个商品对象
    @PostMapping("/test2")
    String test2(@RequestBody Product product);

    //声明调用商品服务中心test?name=xxx&age=23接口传递name，age
    @GetMapping("/test")
    String test(@RequestParam("name") String name, @RequestParam("age") Integer age);

    //调用商品服务
    @GetMapping("/product")
    String product();
}